home *** CD-ROM | disk | FTP | other *** search
- /*
- ** ScreenPanel.c
- **
- ** Editing panel for screen configuration
- **
- ** Copyright © 1990-1995 by Olaf `Olsen' Barthel
- ** All Rights Reserved
- */
-
- #include "termGlobal.h"
-
- enum { GAD_SCREENMODE=1000,GAD_USE_PUBSCREEN,GAD_PUBSCREENNAME,GAD_FONT,
- GAD_COLOURMODE,GAD_SCREENTITLE,GAD_MAKESCREENPUBLIC,GAD_SHANGHAI,
- GAD_BLINKING,GAD_PALETTE,GAD_RED,GAD_GREEN,GAD_BLUE,GAD_RESET,
- GAD_STDPENS,GAD_EDITPENS,GAD_WINDOW_BORDER,GAD_SPLIT_STATUS,
- GAD_STATUS_LINE,GAD_PAGER,GAD_PAGEGROUP,
-
- GAD_USE,GAD_CANCEL,GAD_DEFAULT };
-
- /* CannotChangeColours(struct Configuration *LocalConfig,WORD OriginalColourMode):
- *
- * This routine rolls the dice and determines whether the user should
- * be allowed to change the screen colours or rendering pens.
- */
-
- STATIC BOOL __regargs
- CannotChangeColours(struct Configuration *LocalConfig,WORD OriginalColourMode)
- {
- if(LocalConfig -> ScreenConfig -> ColourMode == OriginalColourMode && !LocalConfig -> ScreenConfig -> UseWorkbench && LocalConfig -> ScreenConfig -> ColourMode == Config -> ScreenConfig -> ColourMode && Screen)
- {
- LONG ThisDepth,RequestedDepth;
-
- ThisDepth = GetBitMapDepth(Window -> WScreen -> RastPort . BitMap);
-
- switch(LocalConfig -> ScreenConfig -> ColourMode)
- {
- case COLOUR_AMIGA:
-
- RequestedDepth = 2;
- break;
-
- case COLOUR_EIGHT:
-
- RequestedDepth = 3;
- break;
-
- case COLOUR_SIXTEEN:
-
- RequestedDepth = 4;
- break;
-
- case COLOUR_MONO:
-
- RequestedDepth = 1;
- break;
- }
-
- return((BOOL)(ThisDepth < RequestedDepth));
- }
- else
- return(TRUE);
- }
-
- STATIC BYTE __regargs
- SelectDisplayMode(struct Window *Window,ULONG *CurrentMode,struct Configuration *Config)
- {
- BYTE Success = FALSE;
-
- if(AslBase -> lib_Version < 38)
- {
- struct List *ModeList;
- LONG Index;
-
- if(ModeList = BuildModeList(&Index,*CurrentMode,NULL))
- {
- struct LayoutHandle *Handle;
-
- if(Handle = LT_CreateHandleTags(Window -> WScreen,
- LH_LocaleHook, &LocaleHook,
- TAG_DONE))
- {
- struct Window *LocalWindow;
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LONG MaxWidth = -1,MaxHeight = 0,Len;
- struct Node *Node;
-
- for(Node = ModeList -> lh_Head ; Node -> ln_Succ ; Node = Node -> ln_Succ)
- {
- Len = strlen(Node -> ln_Name);
-
- if(Len > MaxWidth)
- MaxWidth = Len;
-
- MaxHeight++;
- }
-
- MaxHeight++;
-
- LT_New(Handle,
- LA_Type, LISTVIEW_KIND,
- LA_LabelID, MSG_V36_0160,
- GTLV_Labels, ModeList,
- LA_LONG, &Index,
- LALV_CursorKey, TRUE,
- LALV_Link, NIL_LINK,
- LALV_MaxGrowY, MaxHeight,
- LALV_ResizeY, TRUE,
- LA_Lines, MaxHeight > 10 ? 10 : MaxHeight,
- LA_Chars, MaxWidth,
- LA_CursorKey, TRUE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type,VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, XBAR_KIND,
- LAXB_FullSize, TRUE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,LA_Type,HORIZONTAL_KIND,
- LAGR_SameSize, TRUE,
- LAGR_Spread, TRUE,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, BUTTON_KIND,
- LA_LabelID, MSG_GLOBAL_USE_GAD,
- LA_ID, GAD_USE,
- LABT_ReturnKey, TRUE,
- LABT_ExtraFat, TRUE,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, BUTTON_KIND,
- LA_LabelID, MSG_GLOBAL_CANCEL_GAD,
- LA_ID, GAD_CANCEL,
- LABT_EscKey, TRUE,
- LABT_ExtraFat, TRUE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_EndGroup(Handle);
- }
-
- if(LocalWindow = LT_Build(Handle,
- LAWN_TitleID, MSG_V36_0161,
- LAWN_IDCMP, IDCMP_CLOSEWINDOW,
- LAWN_HelpHook, &GuideHook,
- LAWN_Parent, Window,
- WA_DepthGadget, TRUE,
- WA_CloseGadget, TRUE,
- WA_DragBar, TRUE,
- WA_RMBTrap, TRUE,
- WA_Activate, TRUE,
- WA_SimpleRefresh, TRUE,
- TAG_DONE))
- {
- struct IntuiMessage *Message;
- BOOL Done = FALSE;
- ULONG MsgClass;
- struct Gadget *MsgGadget;
- LONG i;
- struct ModeNode *ModeNode;
-
- do
- {
- WaitPort(LocalWindow -> UserPort);
-
- while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
- {
- MsgClass = Message -> Class;
- MsgGadget = (struct Gadget *)Message -> IAddress;
-
- LT_ReplyIMsg(Message);
-
- if(MsgClass == IDCMP_CLOSEWINDOW)
- Done = TRUE;
-
- if(MsgClass == IDCMP_GADGETUP)
- {
- switch(MsgGadget -> GadgetID)
- {
- case GAD_USE:
-
- for(ModeNode = (struct ModeNode *)ModeList -> lh_Head, i = 0; ModeNode -> VanillaNode . ln_Succ ; ModeNode = (struct ModeNode *)ModeNode -> VanillaNode . ln_Succ, i++)
- {
- if(Index == i)
- {
- *CurrentMode = ModeNode -> DisplayID;
-
- break;
- }
- }
-
- Success = Done = TRUE;
- break;
-
- case GAD_CANCEL:
-
- Done = TRUE;
- break;
- }
- }
-
- if(MsgClass == IDCMP_IDCMPUPDATE)
- {
- for(ModeNode = (struct ModeNode *)ModeList -> lh_Head, i = 0; ModeNode -> VanillaNode . ln_Succ ; ModeNode = (struct ModeNode *)ModeNode -> VanillaNode . ln_Succ, i++)
- {
- if(Index == i)
- {
- *CurrentMode = ModeNode -> DisplayID;
-
- Success = Done = TRUE;
-
- LT_PressButton(Handle,GAD_USE);
-
- break;
- }
- }
- }
- }
- }
- while(!Done);
-
- if(Success)
- {
- Config -> ScreenConfig -> Depth = 0;
- Config -> ScreenConfig -> OverscanType = OSCAN_TEXT;
- Config -> ScreenConfig -> DisplayWidth = 0;
- Config -> ScreenConfig -> DisplayHeight = 0;
- }
- }
-
- LT_DeleteHandle(Handle);
- }
-
- DeleteList(ModeList);
- }
- }
- else
- {
- struct TagItem DimensionTags[5];
- struct ScreenModeRequester *Request;
- LONG DisplayWidth,
- DisplayHeight,
- Depth,
- MinDepth;
- struct Rectangle DisplayClip;
-
- Depth = Config -> ScreenConfig -> Depth;
-
- switch(Config -> ScreenConfig -> ColourMode)
- {
- case COLOUR_AMIGA:
-
- MinDepth = 2;
- break;
-
- case COLOUR_EIGHT:
-
- MinDepth = 3;
- break;
-
- case COLOUR_SIXTEEN:
-
- MinDepth = 4;
- break;
-
- case COLOUR_MONO:
-
- MinDepth = 1;
- break;
- }
-
- if(Depth < MinDepth)
- Depth = MinDepth;
-
- if((!Config -> ScreenConfig -> DisplayWidth || !Config -> ScreenConfig -> DisplayHeight) && QueryOverscan(Config -> ScreenConfig -> DisplayMode,&DisplayClip,Config -> ScreenConfig -> OverscanType))
- {
- DisplayWidth = DisplayClip . MaxX - DisplayClip . MinX + 1;
- DisplayHeight = DisplayClip . MaxY - DisplayClip . MinY + 1;
- }
- else
- {
- DisplayWidth = Config -> ScreenConfig -> DisplayWidth;
- DisplayHeight = Config -> ScreenConfig -> DisplayHeight;
- }
-
- if(Request = (struct ScreenModeRequester *)AllocAslRequestTags(ASL_ScreenModeRequest,
- ASLSM_Window, Window,
- ASLSM_InitialDisplayID, *CurrentMode,
- ASLSM_PrivateIDCMP, TRUE,
- ASLSM_InitialDisplayDepth, Depth,
- ASLSM_MinDepth, MinDepth,
- ASLSM_MaxDepth, 8,
- ASLSM_DoDepth, TRUE,
- ASLSM_DoWidth, TRUE,
- ASLSM_DoHeight, TRUE,
- ASLSM_DoOverscanType, TRUE,
- ASLSM_InitialOverscanType, Config -> ScreenConfig -> OverscanType,
-
- DisplayWidth ? ASLSM_InitialDisplayWidth : TAG_IGNORE, DisplayWidth,
- DisplayHeight ? ASLSM_InitialDisplayHeight : TAG_IGNORE, DisplayHeight,
- TAG_DONE))
- {
- if(AslRequest(Request,GetDimensionTags(NULL,DimensionTags)))
- {
- PutDimensionTags(Window,Request -> sm_LeftEdge,Request -> sm_TopEdge,Request -> sm_Width,Request -> sm_Height);
-
- *CurrentMode = Request -> sm_DisplayID;
-
- if(Request -> sm_DisplayDepth == MinDepth)
- Depth = 0;
- else
- Depth = Request -> sm_DisplayDepth;
-
- Config -> ScreenConfig -> Depth = Depth;
- Config -> ScreenConfig -> OverscanType = Request -> sm_OverscanType;
- Config -> ScreenConfig -> DisplayWidth = Request -> sm_DisplayWidth;
- Config -> ScreenConfig -> DisplayHeight = Request -> sm_DisplayHeight;
-
- Success = TRUE;
- }
-
- FreeAslRequest(Request);
- }
- }
-
- return(Success);
- }
-
- STATIC BOOLEAN __regargs
- PenPanel(struct Window *Window,UWORD *Array,UWORD *DefaultArray,WORD Depth)
- {
- struct LayoutHandle *Handle;
- UWORD PrivateArray[16];
- BOOLEAN Result = FALSE;
-
- CopyMem(Array,PrivateArray,sizeof(PrivateArray));
-
- if(Handle = LT_CreateHandleTags(Window -> WScreen,
- LH_LocaleHook, &LocaleHook,
- LH_ExactClone, TRUE,
- TAG_DONE))
- {
- struct Window *PanelWindow;
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- LA_LabelID, MSG_PENPANEL_DRAWING_PENS_TXT,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, PALETTE_KIND,
- LA_LabelID, MSG_PENPANEL_BACKGROUND_TXT,
- GTPA_Depth, Depth,
- LAPA_SmallPalette, TRUE,
- LA_UWORD, &PrivateArray[BACKGROUNDPEN],
- LA_Chars, 15,
- LA_ID, 100 + BACKGROUNDPEN,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, PALETTE_KIND,
- LA_LabelID, MSG_PENPANEL_TEXT_TXT,
- GTPA_Depth, Depth,
- LAPA_SmallPalette, TRUE,
- LA_UWORD, &PrivateArray[TEXTPEN],
- LA_ID, 100 + TEXTPEN,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, PALETTE_KIND,
- LA_LabelID, MSG_PENPANEL_IMPORTANT_TEXT_TXT,
- GTPA_Depth, Depth,
- LAPA_SmallPalette, TRUE,
- LA_UWORD, &PrivateArray[HIGHLIGHTTEXTPEN],
- LA_ID, 100 + HIGHLIGHTTEXTPEN,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, PALETTE_KIND,
- LA_LabelID, MSG_PENPANEL_BRIGHT_EDGES_TXT,
- GTPA_Depth, Depth,
- LAPA_SmallPalette, TRUE,
- LA_UWORD, &PrivateArray[SHINEPEN],
- LA_ID, 100 + SHINEPEN,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, PALETTE_KIND,
- LA_LabelID, MSG_PENPANEL_DARK_EDGES_TXT,
- GTPA_Depth, Depth,
- LAPA_SmallPalette, TRUE,
- LA_UWORD, &PrivateArray[SHADOWPEN],
- LA_ID, 100 + SHADOWPEN,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, PALETTE_KIND,
- LA_LabelID, MSG_PENPANEL_FILLPEN_TXT,
- GTPA_Depth, Depth,
- LAPA_SmallPalette, TRUE,
- LA_UWORD, &PrivateArray[FILLPEN],
- LA_ID, 100 + FILLPEN,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, PALETTE_KIND,
- LA_LabelID, MSG_PENPANEL_FILLTEXTPEN_TXT,
- GTPA_Depth, Depth,
- LAPA_SmallPalette, TRUE,
- LA_UWORD, &PrivateArray[FILLTEXTPEN],
- LA_ID, 100 + FILLTEXTPEN,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, PALETTE_KIND,
- LA_LabelID, MSG_PENPANEL_BARFILLPEN_TXT,
- GTPA_Depth, Depth,
- LAPA_SmallPalette, TRUE,
- LA_UWORD, &PrivateArray[BARBLOCKPEN],
- LA_ID, 100 + BARBLOCKPEN,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, PALETTE_KIND,
- LA_LabelID, MSG_PENPANEL_BARTEXTPEN_TXT,
- GTPA_Depth, Depth,
- LAPA_SmallPalette, TRUE,
- LA_UWORD, &PrivateArray[BARDETAILPEN],
- LA_ID, 100 + BARDETAILPEN,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type,XBAR_KIND,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, BUTTON_KIND,
- LA_LabelID, MSG_PENPANEL_STANDARDPENS_TXT,
- LA_ID, GAD_DEFAULT,
- LABT_ExtraFat, TRUE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type,VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, XBAR_KIND,
- LAXB_FullSize, TRUE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,LA_Type,HORIZONTAL_KIND,
- LAGR_SameSize, TRUE,
- LAGR_Spread, TRUE,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, BUTTON_KIND,
- LA_LabelID, MSG_GLOBAL_USE_GAD,
- LA_ID, GAD_USE,
- LABT_ReturnKey, TRUE,
- LABT_ExtraFat, TRUE,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, BUTTON_KIND,
- LA_LabelID, MSG_GLOBAL_CANCEL_GAD,
- LA_ID, GAD_CANCEL,
- LABT_EscKey, TRUE,
- LABT_ExtraFat, TRUE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_EndGroup(Handle);
- }
-
- if(PanelWindow = LT_Build(Handle,
- LAWN_TitleID, MSG_PENPANEL_SCREEN_DRAWING_PENS_TXT,
- LAWN_IDCMP, IDCMP_CLOSEWINDOW,
- LAWN_HelpHook, &GuideHook,
- LAWN_Parent, Window,
- WA_DepthGadget, TRUE,
- WA_CloseGadget, TRUE,
- WA_DragBar, TRUE,
- WA_RMBTrap, TRUE,
- WA_Activate, TRUE,
- WA_SimpleRefresh, TRUE,
- TAG_DONE))
- {
- struct IntuiMessage *Message;
- BOOLEAN Done = FALSE;
- ULONG MsgClass;
- struct Gadget *MsgGadget;
- WORD i;
-
- PushWindow(PanelWindow);
-
- LT_ShowWindow(Handle,TRUE);
-
- GuideContext(CONTEXT_SCREEN);
-
- do
- {
- if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
- break;
-
- while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
- {
- MsgClass = Message -> Class;
- MsgGadget = (struct Gadget *)Message -> IAddress;
-
- LT_ReplyIMsg(Message);
-
- if(MsgClass == IDCMP_CLOSEWINDOW)
- Done = TRUE;
-
- if(MsgClass == IDCMP_GADGETUP)
- {
- switch(MsgGadget -> GadgetID)
- {
- case GAD_USE:
-
- CopyMem(PrivateArray,Array,sizeof(PrivateArray));
-
- Array[DETAILPEN] = PrivateArray[BACKGROUNDPEN];
- Array[BLOCKPEN] = PrivateArray[SHADOWPEN];
- Array[BARTRIMPEN] = PrivateArray[BARDETAILPEN];
-
- Result = Done = TRUE;
- break;
-
- case GAD_CANCEL:
-
- Done = TRUE;
- break;
-
- case GAD_DEFAULT:
-
- for(i = TEXTPEN ; i <= BARBLOCKPEN ; i++)
- LT_SetAttributes(Handle,100 + i,GTPA_Color,DefaultArray[i],TAG_DONE);
-
- break;
- }
- }
- }
- }
- while(!Done);
-
- PopWindow();
- }
-
- LT_DeleteHandle(Handle);
- }
-
- return(Result);
- }
-
- BYTE __regargs
- ScreenPanel(struct Configuration *LocalConfig,BYTE *Default)
- {
- STATIC LONG PageTitleID[6] =
- {
- MSG_V36_0163,
- MSG_V36_0164,
- MSG_V36_0165,
- MSG_V36_0166,
- MSG_PENPANEL_DRAWING_PENS_TXT,
- -1
- };
-
- STATIC BYTE InitialPage = 0;
-
- struct LayoutHandle *Handle;
- BYTE UseIt = FALSE;
- STRPTR PageTitle[6];
-
- LocalizeStringTable(PageTitle,PageTitleID);
-
- // Make a backup of the current settings. We will modify only
- // the backup
-
- SaveConfig(LocalConfig,PrivateConfig);
-
- // If the settings aren't yet patched up for 96 bit mode,
- // do it now.
-
- if(!PrivateConfig -> ScreenConfig -> UseColours96)
- {
- Colour12x96(PrivateConfig -> ScreenConfig -> Colours,PrivateConfig -> ScreenConfig -> Colours96,16);
-
- PrivateConfig -> ScreenConfig -> UseColours96 = TRUE;
- }
-
- if(Handle = LT_CreateHandleTags(Window -> WScreen,
- LH_LocaleHook, &LocaleHook,
- LH_ExactClone, TRUE,
- LH_ExitFlush, FALSE,
- TAG_DONE))
- {
- struct Window *LocalWindow;
- UBYTE ModeName[DISPLAYNAMELEN + 1],
- FontName[MAX_FILENAME_LENGTH];
- ULONG DisplayMode;
- BOOL FixedColours = CannotChangeColours(PrivateConfig,LocalConfig -> ScreenConfig -> ColourMode);
-
- // Get the desired screen display mode
-
- DisplayMode = PrivateConfig -> ScreenConfig -> DisplayMode;
-
- // Is the requested screen display mode available on this machine?
-
- if(ModeNotAvailable(DisplayMode))
- {
- struct Screen *PubScreen = LockPubScreen(NULL);
-
- // Lock the default public screen
-
- if(PubScreen)
- {
- struct DimensionInfo DimensionInfo;
-
- // Use the default display mode
-
- DisplayMode = GetVPModeID(&PubScreen -> ViewPort);
-
- // Get the default screen size for this display mode
-
- if(GetDisplayInfoData(NULL,(APTR)&DimensionInfo,sizeof(struct DimensionInfo),DTAG_DIMS,DisplayMode))
- {
- LONG Width = DimensionInfo . TxtOScan . MaxX - DimensionInfo . TxtOScan . MinX + 1,
- Height = DimensionInfo . TxtOScan . MaxY - DimensionInfo . TxtOScan . MinY + 1;
-
- // If the screen is set to a specific size, override
- // these settings with defaults.
-
- if(Width != PrivateConfig -> ScreenConfig -> DisplayWidth && PrivateConfig -> ScreenConfig -> DisplayWidth > 0)
- PrivateConfig -> ScreenConfig -> DisplayWidth = Width;
-
- if(Height != PrivateConfig -> ScreenConfig -> DisplayHeight && PrivateConfig -> ScreenConfig -> DisplayHeight > 0)
- PrivateConfig -> ScreenConfig -> DisplayHeight = Height;
- }
-
- UnlockPubScreen(NULL,PubScreen);
- }
- else
- DisplayMode = DEFAULT_MONITOR_ID | HIRES_KEY; // Catch all...
- }
-
- // The name of the display mode chosen
-
- strcpy(ModeName,GetModeName(DisplayMode));
-
- BuildFontName(FontName,PrivateConfig -> ScreenConfig -> FontName,PrivateConfig -> ScreenConfig -> FontHeight);
-
- // If we cannot change the colours, or would
- // display the wrong colours when choosing the
- // rendering pens, don't display the last
- // two pages
-
- if(FixedColours)
- {
- if(InitialPage > 2)
- InitialPage = 2;
-
- PageTitle[3] = NULL;
- }
-
- if(!Kick30)
- {
- if(InitialPage > 3)
- InitialPage = 3;
-
- PageTitle[4] = NULL;
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type,VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, TAB_KIND,
- LA_ID, GAD_PAGER,
- LA_LabelID, MSG_XFER_PAGE_TXT,
- GTCY_Labels, PageTitle,
- LACY_AutoPageID,GAD_PAGEGROUP,
- LACY_TabKey, TRUE,
- LA_BYTE, &InitialPage,
- LATB_FullWidth, TRUE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- LA_ID, GAD_PAGEGROUP,
- LAGR_ActivePage,InitialPage,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, TEXT_KIND,
- LA_LabelID, MSG_SCREENPANEL_CURRENT_DISPLAY_MODE_GAD,
- LA_Chars, 20,
- LA_ID, GAD_SCREENMODE,
- GTTX_Text, ModeName,
- GTTX_Border, TRUE,
- LATX_Picker, TRUE,
- LATX_LockSize, TRUE,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, TEXT_KIND,
- LA_LabelID, MSG_SCREENPANEL_SCREEN_FONT_GAD,
- LA_Chars, 20,
- LA_ID, GAD_FONT,
- GTTX_Text, FontName,
- GTTX_Border, TRUE,
- LATX_Picker, TRUE,
- LATX_LockSize, TRUE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- if(Kick30)
- {
- LT_New(Handle,
- LA_Type, CHECKBOX_KIND,
- LA_LabelID, MSG_SCREENPANEL_FASTER_LAYOUT_GAD,
- LA_BYTE, &PrivateConfig -> ScreenConfig -> FasterLayout,
- TAG_DONE);
- }
-
- LT_New(Handle,
- LA_Type, CHECKBOX_KIND,
- LA_LabelID, MSG_SCREENPANEL_MAKE_SCREEN_PUBLIC_GAD,
- LA_BYTE, &PrivateConfig -> ScreenConfig -> MakeScreenPublic,
- LA_ID, GAD_MAKESCREENPUBLIC,
- GA_Disabled, PrivateConfig -> ScreenConfig -> UseWorkbench,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, CHECKBOX_KIND,
- LA_ID, GAD_SHANGHAI,
- LA_LabelID, MSG_SCREENPANEL_SHANGHAI_WINDOWS_GAD,
- LA_BYTE, &PrivateConfig -> ScreenConfig -> ShanghaiWindows,
- GA_Disabled, PrivateConfig -> ScreenConfig -> UseWorkbench,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, XBAR_KIND,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, CHECKBOX_KIND,
- LA_ID, GAD_USE_PUBSCREEN,
- LA_LabelID, MSG_SCREENPANEL_USE_WORKBENCH_GAD,
- LA_BYTE, &PrivateConfig -> ScreenConfig -> UseWorkbench,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, STRING_KIND,
- LA_LabelID, MSG_SCREENPANEL_PUBSCREEN_NAME_GAD,
- LA_ID, GAD_PUBSCREENNAME,
- LA_STRPTR, PrivateConfig -> ScreenConfig -> PubScreenName,
- LA_Chars, 14,
- GTST_MaxChars, MAXPUBSCREENNAME,
- LAST_Picker, TRUE,
- GA_Disabled, !PrivateConfig -> ScreenConfig -> UseWorkbench,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, CHECKBOX_KIND,
- LA_LabelID, MSG_SCREENPANEL_SCREEN_TITLE_GAD,
- LA_BYTE, &PrivateConfig -> ScreenConfig -> TitleBar,
- LA_ID, GAD_SCREENTITLE,
- GA_Disabled, PrivateConfig -> ScreenConfig -> UseWorkbench,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, CHECKBOX_KIND,
- LA_LabelID, MSG_SCREENPANEL_WINDOW_BORDER_TXT,
- LA_BYTE, &PrivateConfig -> ScreenConfig -> ShareScreen,
- LA_ID, GAD_WINDOW_BORDER,
- GA_Disabled, PrivateConfig -> ScreenConfig -> UseWorkbench,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, XBAR_KIND,
- TAG_DONE);
-
- PrivateConfig -> ScreenConfig -> StatusLine &= 0xF;
-
- LT_New(Handle,
- LA_Type, CHECKBOX_KIND,
- LA_LabelID, MSG_SCREENPANEL_SEPARATE_STATUS_WINDOW_TXT,
- LA_BYTE, &PrivateConfig -> ScreenConfig -> SplitStatus,
- LA_ID, GAD_SPLIT_STATUS,
- GA_Disabled, !PrivateConfig -> ScreenConfig -> StatusLine || (!PrivateConfig -> ScreenConfig -> ShareScreen && !PrivateConfig -> ScreenConfig -> UseWorkbench),
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, CYCLE_KIND,
- LA_LabelID, MSG_SCREENPANEL_STATUS_LINE_GAD,
- LA_BYTE, &PrivateConfig -> ScreenConfig -> StatusLine,
- LACY_FirstLabel,MSG_SCREENPANEL_STATUS_DISABLED_TXT,
- LACY_LastLabel, MSG_SCREENPANEL_STATUS_COMPACT_TXT,
- LA_ID, GAD_STATUS_LINE,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, CYCLE_KIND,
- LA_LabelID, MSG_SCREENPANEL_ONLINE_TIME_GAD,
- LA_BYTE, &PrivateConfig -> ScreenConfig -> TimeMode,
- LACY_FirstLabel,MSG_SCREENPANEL_TIME_ONLINETIME_TXT,
- LACY_LastLabel, MSG_SCREENPANEL_TIME_BOTH_TXT,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, MX_KIND,
- LA_LabelID, MSG_SCREENPANEL_COLOUR_GAD,
- LA_WORD, &PrivateConfig -> ScreenConfig -> ColourMode,
- LA_ID, GAD_COLOURMODE,
- LAMX_FirstLabel,MSG_SCREENPANEL_COLOUR_AMIGA_TXT,
- LAMX_LastLabel, MSG_SCREENPANEL_COLOUR_MONO_TXT,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, CHECKBOX_KIND,
- LA_LabelID, MSG_SCREENPANEL_BLINKING_GAD,
- LA_ID, GAD_BLINKING,
- LA_BYTE, &PrivateConfig -> ScreenConfig -> Blinking,
- GA_Disabled, PrivateConfig -> ScreenConfig -> ColourMode == COLOUR_MONO,
- LA_ExtraSpace, TRUE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- if(!FixedColours)
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LONG Depth;
-
- switch(PrivateConfig -> ScreenConfig -> ColourMode)
- {
- case COLOUR_MONO:
-
- Depth = 1;
- break;
-
- case COLOUR_AMIGA:
-
- Depth = 2;
- break;
-
- case COLOUR_EIGHT:
-
- Depth = 3;
- break;
-
- case COLOUR_SIXTEEN:
-
- Depth = 4;
- break;
- }
-
- if(PrivateConfig -> ScreenConfig -> UseWorkbench)
- {
- LONG i,MaxDepth = 4;
-
- for(i = 0 ; i < 4 ; i++)
- {
- if((1L << i) > Window -> WScreen -> ViewPort . ColorMap -> Count)
- {
- MaxDepth = i;
-
- break;
- }
- }
-
- if(Depth > MaxDepth)
- Depth = MaxDepth;
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- WORD ColourMax;
- STRPTR ColourFormat;
-
- if(Kick30)
- {
- ColourMax = 255;
- ColourFormat = "%3ld";
- }
- else
- {
- ColourMax = 15;
- ColourFormat = "%2ld";
- }
-
- LT_New(Handle,
- LA_Type, PALETTE_KIND,
- LA_LabelID, MSG_SCREENPANEL_EDIT_SCREEN_PALETTE_GAD,
- LA_ID, GAD_PALETTE,
- LA_Chars, 12,
- GTPA_Depth, Depth,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, SliderType,
- LA_LabelID, MSG_SCREENPANEL_RED_GAD,
- LA_ID, GAD_RED,
- GTSL_Min, 0,
- GTSL_Max, ColourMax,
- GTSL_Level, 0,
- GTSL_LevelFormat, ColourFormat,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, SliderType,
- LA_LabelID, MSG_SCREENPANEL_GREEN_GAD,
- LA_ID, GAD_GREEN,
- GTSL_Min, 0,
- GTSL_Max, ColourMax,
- GTSL_Level, 0,
- GTSL_LevelFormat, ColourFormat,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, SliderType,
- LA_LabelID, MSG_SCREENPANEL_BLUE_GAD,
- LA_ID, GAD_BLUE,
- GTSL_Min, 0,
- GTSL_Max, ColourMax,
- GTSL_Level, 0,
- GTSL_LevelFormat, ColourFormat,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, XBAR_KIND,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, BUTTON_KIND,
- LA_LabelID, MSG_SCREENPANEL_USE_DEFAULT_TXT,
- LA_ID, GAD_RESET,
- LA_Chars, 16,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_EndGroup(Handle);
- }
-
- if(Kick30)
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, CHECKBOX_KIND,
- LA_LabelID, MSG_PENPANEL_STANDARDPENS_TXT,
- LA_ID, GAD_STDPENS,
- LA_BYTE, &PrivateConfig -> ScreenConfig -> UsePens,
- GA_Disabled, PrivateConfig -> ScreenConfig -> UseWorkbench,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, BUTTON_KIND,
- LA_LabelID, MSG_PENPANEL_EDITPENS_TXT,
- LA_ID, GAD_EDITPENS,
- GA_Disabled, PrivateConfig -> ScreenConfig -> UsePens || PrivateConfig -> ScreenConfig -> UseWorkbench,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_EndGroup(Handle);
- }
- }
- }
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,LA_Type,XBAR_KIND,LAXB_FullSize,TRUE,TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,LA_Type,HORIZONTAL_KIND,
- LAGR_SameSize, TRUE,
- LAGR_Spread, TRUE,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, BUTTON_KIND,
- LA_LabelID, MSG_GLOBAL_USE_GAD,
- LA_ID, GAD_USE,
- LABT_ReturnKey, TRUE,
- LABT_ExtraFat, TRUE,
- TAG_DONE);
-
- if(Default)
- {
- LT_New(Handle,
- LA_Type, BUTTON_KIND,
- LA_LabelID, MSG_GLOBAL_DEFAULT_GAD,
- LA_ID, GAD_DEFAULT,
- LABT_ExtraFat, TRUE,
- TAG_DONE);
- }
-
- LT_New(Handle,
- LA_Type, BUTTON_KIND,
- LA_LabelID, MSG_GLOBAL_CANCEL_GAD,
- LA_ID, GAD_CANCEL,
- LABT_EscKey, TRUE,
- LABT_ExtraFat, TRUE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_EndGroup(Handle);
- }
-
- if(LocalWindow = LT_Build(Handle,
- LAWN_TitleID, MSG_SCREENPANEL_SCREEN_PREFERENCES_TXT,
- LAWN_IDCMP, IDCMP_CLOSEWINDOW,
- LAWN_HelpHook, &GuideHook,
- LAWN_Parent, Window,
- WA_DepthGadget, TRUE,
- WA_CloseGadget, TRUE,
- WA_DragBar, TRUE,
- WA_RMBTrap, TRUE,
- WA_Activate, TRUE,
- WA_SimpleRefresh, TRUE,
- TAG_DONE))
- {
- struct IntuiMessage *Message;
- BOOLEAN Done = FALSE;
- ULONG MsgClass;
- UWORD MsgCode;
- struct Gadget *MsgGadget;
-
- WORD ColourNumber = 0,Count,i;
- WORD Red,Green,Blue;
- struct ViewPort *LocalVPort = &LocalWindow -> WScreen -> ViewPort;
- UWORD *DefaultPens,Depth;
-
- switch(PrivateConfig -> ScreenConfig -> ColourMode)
- {
- case COLOUR_MONO:
-
- DefaultPens = MonoPens;
- Depth = 1;
- break;
-
- case COLOUR_AMIGA:
-
- DefaultPens = StandardPens;
- Depth = 2;
- break;
-
- case COLOUR_EIGHT:
-
- DefaultPens = ANSIPens;
- Depth = 3;
- break;
-
- case COLOUR_SIXTEEN:
-
- if(Kick30)
- DefaultPens = NewEGAPens;
- else
- DefaultPens = EGAPens;
-
- Depth = 4;
- break;
- }
-
- for(Count = 0, i = DETAILPEN ; i <= BARTRIMPEN ; i++)
- {
- if(PrivateConfig -> ScreenConfig -> PenArray[i])
- Count++;
- }
-
- if(!Count)
- CopyMem(DefaultPens,PrivateConfig -> ScreenConfig -> PenArray,16 * sizeof(UWORD));
-
- PrivateConfig -> ScreenConfig -> DisplayMode = DisplayMode;
-
- if(!FixedColours)
- {
- if(Kick30)
- {
- Red = PrivateConfig -> ScreenConfig -> Colours96[ColourNumber * 3 + 0] >> 24;
- Green = PrivateConfig -> ScreenConfig -> Colours96[ColourNumber * 3 + 1] >> 24;
- Blue = PrivateConfig -> ScreenConfig -> Colours96[ColourNumber * 3 + 2] >> 24;
- }
- else
- {
- Red = (PrivateConfig -> ScreenConfig -> Colours[ColourNumber] >> 8) & 0xF;
- Green = (PrivateConfig -> ScreenConfig -> Colours[ColourNumber] >> 4) & 0xF;
- Blue = (PrivateConfig -> ScreenConfig -> Colours[ColourNumber] ) & 0xF;
- }
-
- LT_SetAttributes(Handle,GAD_RED, GTSL_Level, Red, TAG_DONE);
- LT_SetAttributes(Handle,GAD_GREEN, GTSL_Level, Green, TAG_DONE);
- LT_SetAttributes(Handle,GAD_BLUE, GTSL_Level, Blue, TAG_DONE);
-
- PaletteSetup(PrivateConfig);
-
- LoadColourTable(VPort, NormalColourTable,NormalColours,PaletteSize);
- LoadColourTable(LocalVPort, NormalColourTable,NormalColours,PaletteSize);
- }
-
- GuideContext(CONTEXT_SCREEN);
-
- PushWindow(LocalWindow);
-
- LT_ShowWindow(Handle,TRUE);
-
- do
- {
- if(Wait(PORTMASK(LocalWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
- break;
-
- while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
- {
- MsgClass = Message -> Class;
- MsgCode = Message -> Code;
- MsgGadget = (struct Gadget *)Message -> IAddress;
-
- LT_ReplyIMsg(Message);
-
- if(MsgClass == IDCMP_CLOSEWINDOW)
- Done = TRUE;
-
- if(MsgClass == IDCMP_GADGETUP || MsgClass == IDCMP_MOUSEMOVE || MsgClass == IDCMP_GADGETDOWN)
- {
- switch(MsgGadget -> GadgetID)
- {
- case GAD_RED:
-
- if(Kick30)
- Red = MsgCode;
- else
- Red = (MsgCode << 4) | MsgCode;
-
- PrivateConfig -> ScreenConfig -> Colours96[ColourNumber * 3 + 0] = SPREAD(Red);
-
- PaletteSetup(PrivateConfig);
-
- LoadColourTable(VPort, NormalColourTable,NormalColours,PaletteSize);
- LoadColourTable(LocalVPort, NormalColourTable,NormalColours,PaletteSize);
-
- break;
-
- case GAD_GREEN:
-
- if(Kick30)
- Green = MsgCode;
- else
- Green = (MsgCode << 4) | MsgCode;
-
- PrivateConfig -> ScreenConfig -> Colours96[ColourNumber * 3 + 1] = SPREAD(Green);
-
- PaletteSetup(PrivateConfig);
-
- LoadColourTable(VPort, NormalColourTable,NormalColours,PaletteSize);
- LoadColourTable(LocalVPort, NormalColourTable,NormalColours,PaletteSize);
-
- break;
-
- case GAD_BLUE:
-
- if(Kick30)
- Blue = MsgCode;
- else
- Blue = (MsgCode << 4) | MsgCode;
-
- PrivateConfig -> ScreenConfig -> Colours96[ColourNumber * 3 + 2] = SPREAD(Blue);
-
- PaletteSetup(PrivateConfig);
-
- LoadColourTable(VPort, NormalColourTable,NormalColours,PaletteSize);
- LoadColourTable(LocalVPort, NormalColourTable,NormalColours,PaletteSize);
-
- break;
-
- case GAD_STDPENS:
-
- LT_SetAttributes(Handle,GAD_EDITPENS,
- GA_Disabled,PrivateConfig -> ScreenConfig -> UsePens || PrivateConfig -> ScreenConfig -> UseWorkbench || FixedColours,
- TAG_DONE);
-
- break;
-
- case GAD_USE_PUBSCREEN:
-
- LT_SetAttributes(Handle,GAD_PUBSCREENNAME, GA_Disabled,!PrivateConfig -> ScreenConfig -> UseWorkbench,TAG_DONE);
- LT_SetAttributes(Handle,GAD_MAKESCREENPUBLIC, GA_Disabled,PrivateConfig -> ScreenConfig -> UseWorkbench,TAG_DONE);
- LT_SetAttributes(Handle,GAD_SHANGHAI, GA_Disabled,PrivateConfig -> ScreenConfig -> UseWorkbench,TAG_DONE);
- LT_SetAttributes(Handle,GAD_SCREENTITLE, GA_Disabled,PrivateConfig -> ScreenConfig -> UseWorkbench,TAG_DONE);
- LT_SetAttributes(Handle,GAD_WINDOW_BORDER, GA_Disabled,PrivateConfig -> ScreenConfig -> UseWorkbench,TAG_DONE);
- LT_SetAttributes(Handle,GAD_BLINKING, GA_Disabled,PrivateConfig -> ScreenConfig -> ColourMode == COLOUR_MONO,TAG_DONE);
- LT_SetAttributes(Handle,GAD_SPLIT_STATUS, GA_Disabled,!PrivateConfig -> ScreenConfig -> StatusLine || (!PrivateConfig -> ScreenConfig -> ShareScreen && !PrivateConfig -> ScreenConfig -> UseWorkbench),TAG_DONE);
-
- FixedColours = CannotChangeColours(PrivateConfig,LocalConfig -> ScreenConfig -> ColourMode);
-
- LT_SetAttributes(Handle,GAD_PALETTE, GA_Disabled,FixedColours,TAG_DONE);
- LT_SetAttributes(Handle,GAD_RED, GA_Disabled,FixedColours,TAG_DONE);
- LT_SetAttributes(Handle,GAD_GREEN, GA_Disabled,FixedColours,TAG_DONE);
- LT_SetAttributes(Handle,GAD_BLUE, GA_Disabled,FixedColours,TAG_DONE);
- LT_SetAttributes(Handle,GAD_RESET, GA_Disabled,FixedColours,TAG_DONE);
-
- LT_SetAttributes(Handle,GAD_EDITPENS,
- GA_Disabled, PrivateConfig -> ScreenConfig -> UsePens || PrivateConfig -> ScreenConfig -> UseWorkbench || FixedColours,
- TAG_DONE);
-
- LT_SetAttributes(Handle,GAD_STDPENS,
- GTCB_Checked, PrivateConfig -> ScreenConfig -> UsePens = TRUE,
- GA_Disabled, PrivateConfig -> ScreenConfig -> UseWorkbench || FixedColours,
- TAG_DONE);
-
- break;
-
- case GAD_WINDOW_BORDER:
-
- LT_SetAttributes(Handle,GAD_SPLIT_STATUS,GA_Disabled,!PrivateConfig -> ScreenConfig -> StatusLine || (!PrivateConfig -> ScreenConfig -> ShareScreen && !PrivateConfig -> ScreenConfig -> UseWorkbench),TAG_DONE);
- break;
-
- case GAD_COLOURMODE:
-
- if(!ModeOkay(PrivateConfig -> ScreenConfig -> DisplayMode) && PrivateConfig -> ScreenConfig -> ColourMode > COLOUR_AMIGA)
- LT_SetAttributes(Handle,GAD_COLOURMODE,GTCY_Active,COLOUR_AMIGA,TAG_DONE);
-
- FixedColours = CannotChangeColours(PrivateConfig,LocalConfig -> ScreenConfig -> ColourMode);
-
- LT_SetAttributes(Handle,GAD_PALETTE, GA_Disabled,FixedColours,TAG_DONE);
- LT_SetAttributes(Handle,GAD_RED, GA_Disabled,FixedColours,TAG_DONE);
- LT_SetAttributes(Handle,GAD_GREEN, GA_Disabled,FixedColours,TAG_DONE);
- LT_SetAttributes(Handle,GAD_BLUE, GA_Disabled,FixedColours,TAG_DONE);
- LT_SetAttributes(Handle,GAD_RESET, GA_Disabled,FixedColours,TAG_DONE);
- LT_SetAttributes(Handle,GAD_BLINKING, GA_Disabled,PrivateConfig -> ScreenConfig -> ColourMode == COLOUR_MONO,TAG_DONE);
-
- switch(PrivateConfig -> ScreenConfig -> ColourMode)
- {
- case COLOUR_MONO:
-
- DefaultPens = MonoPens;
- Depth = 1;
- break;
-
- case COLOUR_AMIGA:
-
- DefaultPens = StandardPens;
- Depth = 2;
- break;
-
- case COLOUR_EIGHT:
-
- DefaultPens = ANSIPens;
- Depth = 3;
- break;
-
- case COLOUR_SIXTEEN:
-
- DefaultPens = EGAPens;
- Depth = 4;
- break;
- }
-
- LT_SetAttributes(Handle,GAD_EDITPENS,
- GA_Disabled, FixedColours,
- TAG_DONE);
-
- LT_SetAttributes(Handle,GAD_STDPENS,
- GA_Disabled, FixedColours,
- TAG_DONE);
-
- Default2CurrentPalette(PrivateConfig);
-
- break;
-
- case GAD_EDITPENS:
-
- LT_LockWindow(LocalWindow);
-
- if(PrivateConfig -> ScreenConfig -> PenColourMode != PrivateConfig -> ScreenConfig -> ColourMode)
- {
- UWORD LocalPens[16];
-
- CopyMem(DefaultPens,LocalPens,16 * sizeof(UWORD));
-
- if(PenPanel(LocalWindow,LocalPens,DefaultPens,Depth))
- {
- CopyMem(LocalPens,PrivateConfig -> ScreenConfig -> PenArray,16 * sizeof(UWORD));
-
- PrivateConfig -> ScreenConfig -> PenColourMode = PrivateConfig -> ScreenConfig -> ColourMode;
- }
- }
- else
- PenPanel(LocalWindow,PrivateConfig -> ScreenConfig -> PenArray,DefaultPens,Depth);
-
- LT_UnlockWindow(LocalWindow);
-
- LT_ShowWindow(Handle,TRUE);
- break;
-
- case GAD_MAKESCREENPUBLIC:
-
- LT_SetAttributes(Handle,GAD_SHANGHAI,
- GA_Disabled, !PrivateConfig -> ScreenConfig -> MakeScreenPublic || PrivateConfig -> ScreenConfig -> UseWorkbench,
- TAG_DONE);
-
- break;
-
- case GAD_PALETTE:
-
- ColourNumber = MsgCode;
-
- if(Kick30)
- {
- Red = PrivateConfig -> ScreenConfig -> Colours96[ColourNumber * 3 + 0] >> 24;
- Green = PrivateConfig -> ScreenConfig -> Colours96[ColourNumber * 3 + 1] >> 24;
- Blue = PrivateConfig -> ScreenConfig -> Colours96[ColourNumber * 3 + 2] >> 24;
- }
- else
- {
- Red = (PrivateConfig -> ScreenConfig -> Colours[ColourNumber] >> 8) & 0xF;
- Green = (PrivateConfig -> ScreenConfig -> Colours[ColourNumber] >> 4) & 0xF;
- Blue = (PrivateConfig -> ScreenConfig -> Colours[ColourNumber] ) & 0xF;
- }
-
- LT_SetAttributes(Handle,GAD_RED, GTSL_Level, Red, TAG_DONE);
- LT_SetAttributes(Handle,GAD_GREEN, GTSL_Level, Green, TAG_DONE);
- LT_SetAttributes(Handle,GAD_BLUE, GTSL_Level, Blue, TAG_DONE);
-
- break;
-
- case GAD_RESET:
-
- Default2CurrentPalette(PrivateConfig);
-
- if(Kick30)
- {
- Red = PrivateConfig -> ScreenConfig -> Colours96[ColourNumber * 3 + 0] >> 24;
- Green = PrivateConfig -> ScreenConfig -> Colours96[ColourNumber * 3 + 1] >> 24;
- Blue = PrivateConfig -> ScreenConfig -> Colours96[ColourNumber * 3 + 2] >> 24;
- }
- else
- {
- Red = (PrivateConfig -> ScreenConfig -> Colours[ColourNumber] >> 8) & 0xF;
- Green = (PrivateConfig -> ScreenConfig -> Colours[ColourNumber] >> 4) & 0xF;
- Blue = (PrivateConfig -> ScreenConfig -> Colours[ColourNumber] ) & 0xF;
- }
-
- LT_SetAttributes(Handle,GAD_RED, GTSL_Level, Red, TAG_DONE);
- LT_SetAttributes(Handle,GAD_GREEN, GTSL_Level, Green, TAG_DONE);
- LT_SetAttributes(Handle,GAD_BLUE, GTSL_Level, Blue, TAG_DONE);
-
- PaletteSetup(PrivateConfig);
-
- LoadColourTable(VPort, NormalColourTable,NormalColours,PaletteSize);
- LoadColourTable(LocalVPort, NormalColourTable,NormalColours,PaletteSize);
-
- break;
-
- case GAD_USE:
-
- LT_UpdateStrings(Handle);
-
- if(!FixedColours)
- PaletteSetup(PrivateConfig);
- else
- {
- if(PrivateConfig -> ScreenConfig -> ColourMode != PrivateConfig -> ScreenConfig -> ColourMode)
- Default2CurrentPalette(PrivateConfig);
- }
-
- if(PrivateConfig -> ScreenConfig -> PenColourMode != PrivateConfig -> ScreenConfig -> ColourMode)
- {
- CopyMem(DefaultPens,PrivateConfig -> ScreenConfig -> PenArray,16 * sizeof(UWORD));
-
- PrivateConfig -> ScreenConfig -> PenColourMode = PrivateConfig -> ScreenConfig -> ColourMode;
- }
-
- UseIt = Done = TRUE;
- break;
-
- case GAD_CANCEL:
-
- Done = TRUE;
- break;
-
- case GAD_DEFAULT:
-
- UseIt = *Default = TRUE;
-
- Done = TRUE;
- break;
- }
- }
-
- if(MsgClass == IDCMP_IDCMPUPDATE)
- {
- switch(MsgGadget -> GadgetID)
- {
- case GAD_FONT:
-
- if(PickFont(LocalWindow,PrivateConfig -> ScreenConfig -> FontName,&PrivateConfig -> ScreenConfig -> FontHeight,FALSE))
- {
- BuildFontName(FontName,PrivateConfig -> ScreenConfig -> FontName,PrivateConfig -> ScreenConfig -> FontHeight);
-
- LT_SetAttributes(Handle,GAD_FONT,
- GTTX_Text, FontName,
- TAG_DONE);
- }
-
- break;
-
- case GAD_SCREENMODE:
-
- LT_LockWindow(LocalWindow);
-
- if(SelectDisplayMode(LocalWindow,&PrivateConfig -> ScreenConfig -> DisplayMode,PrivateConfig))
- {
- strcpy(ModeName,GetModeName(PrivateConfig -> ScreenConfig -> DisplayMode));
-
- LT_SetAttributes(Handle,GAD_SCREENMODE,GTTX_Text,ModeName,TAG_DONE);
- }
-
- LT_UnlockWindow(LocalWindow);
-
- LT_ShowWindow(Handle,TRUE);
-
- break;
-
- case GAD_STATUS_LINE:
-
- LT_SetAttributes(Handle,GAD_SPLIT_STATUS,GA_Disabled,!PrivateConfig -> ScreenConfig -> StatusLine || (!PrivateConfig -> ScreenConfig -> ShareScreen && !PrivateConfig -> ScreenConfig -> UseWorkbench),TAG_DONE);
-
- break;
-
- case GAD_PUBSCREENNAME:
-
- if(PrivateConfig -> ScreenConfig -> UseWorkbench)
- {
- UBYTE DummyBuffer[MAXPUBSCREENNAME + 1];
-
- LT_LockWindow(LocalWindow);
-
- strcpy(DummyBuffer,(STRPTR)LT_GetAttributes(Handle,GAD_PUBSCREENNAME,TAG_DONE));
- strcpy(SharedBuffer,DummyBuffer);
-
- if(PickScreen(LocalWindow,DummyBuffer))
- {
- if(strcmp(DummyBuffer,SharedBuffer))
- LT_SetAttributes(Handle,GAD_PUBSCREENNAME,GTST_String,DummyBuffer,TAG_DONE);
- }
-
- LT_UnlockWindow(LocalWindow);
-
- LT_ShowWindow(Handle,TRUE);
- }
-
- break;
- }
- }
- }
- }
- while(!Done);
-
- PopWindow();
-
- if(((UseIt && Config != LocalConfig) || (!UseIt && Config == LocalConfig)) && !Config -> ScreenConfig -> UseWorkbench && Screen)
- {
- PaletteSetup(Config);
-
- LoadColourTable(VPort, NormalColourTable,NormalColours,PaletteSize);
- LoadColourTable(LocalVPort, NormalColourTable,NormalColours,PaletteSize);
- }
- }
-
- LT_DeleteHandle(Handle);
- }
-
- if(UseIt)
- SwapConfig(LocalConfig,PrivateConfig);
- else
- SaveConfig(LocalConfig,PrivateConfig);
-
- return(UseIt);
- }
-